package com.ruoyi.system.service;

import java.util.List;

import com.ruoyi.system.domain.TrainingCadetTeacherNotes;
import com.ruoyi.system.domain.TrainingStudyRecord;
import com.ruoyi.system.domain.TrainingStudyRecordCount;

/**
 * 培训学习记录Service接口
 * 
 * @author dp
 * @date 2024-01-11
 */
public interface ITrainingStudyRecordService 
{
    /**
     * 查询培训学习记录
     * 
     * @param studyRecordId 培训学习记录主键
     * @return 培训学习记录
     */
    public TrainingStudyRecord selectTrainingStudyRecordByStudyRecordId(Long studyRecordId);

    /**
     * 查询培训学习记录列表
     * 
     * @param trainingStudyRecord 培训学习记录
     * @return 培训学习记录集合
     */
    public List<TrainingStudyRecord> selectTrainingStudyRecordList(TrainingStudyRecord trainingStudyRecord);

    /**
     * 查询培训学习记录合计列表
     * @param submitBegin
     * @param submitEnd
     * @param baseId
     * @param notesStatus
     * @param cadetId
     * @param cadetName
     * @return
     */
    public List<TrainingStudyRecordCount> selectTrainingStudyRecordCount(
            String submitBegin, String submitEnd, String baseId, String notesStatus, Long cadetId, String cadetName);

    public List<TrainingStudyRecord>  getRecordList(String submitBegin, String submitEnd, String baseId, String cadetId, String notesStatus);

    /**
     * 新增培训学习记录
     * 
     * @param trainingStudyRecord 培训学习记录
     * @return 结果
     */
    public int insertTrainingStudyRecord(TrainingStudyRecord trainingStudyRecord);

    /**
     * 修改培训学习记录
     * 
     * @param trainingStudyRecord 培训学习记录
     * @return 结果
     */
    public int updateTrainingStudyRecord(TrainingStudyRecord trainingStudyRecord);

    /**
     * 批量删除培训学习记录
     * 
     * @param studyRecordIds 需要删除的培训学习记录主键集合
     * @return 结果
     */
    public int deleteTrainingStudyRecordByStudyRecordIds(Long[] studyRecordIds);

    /**
     * 删除培训学习记录信息
     * 
     * @param studyRecordId 培训学习记录主键
     * @return 结果
     */
    public int deleteTrainingStudyRecordByStudyRecordId(Long studyRecordId);

    /**
     * 实体数据补全
     *
     * @param trainingStudyRecord 实体
     * @param userId       用户id
     * @param crateType    创建类型 1：新增 2：修改
     */
    public void completeData(TrainingStudyRecord trainingStudyRecord, Long userId, Integer crateType);

}
